CustomPredict
根据置信度(weight)对候选标签(label)进行排序和筛选,以生成最终的预测结果。
- 输入:
input -
LabelInfo结构体数组的地址。每个结构体包含一个整数label和一个浮点数weight。input_size - 输入数组中的元素数量。
output_num - 期望输出的预测结果数量(Top-K 中的 K)。
weight_threshold - 一个浮点数阈值,用于过滤掉置信度过低的预测结果。
core_mask - 核掩码 (仅共享存储版本需要)。
- 输出:
output_label - 存储最终预测标签的整数数组地址。
output_weight - 存储最终预测权重的浮点数数组地址。
- 支持平台:
FT78NEMT7004
备注
该算子不区分数据类型,但其处理的
LabelInfo结构体具有固定的成员类型(int, float)。
共享存储版本:
-
void custompredict_s(LabelInfo *input, int input_size, int *output_label, float *output_weight, int output_num, float weight_threshold, int core_mask)
C调用示例:
1#include <stdio.h>
2#include "custompredict.h"
3
4int main() {
5 LabelInfo *input = (LabelInfo *)0xA0000000; // input in DDR
6 int *output_label = (int *)0xB0000000; // output_label in DDR
7 float *output_weight = (float *)0xC0000000; // output_weight in DDR
8
9 int input_size = 100; // 假设值
10 int output_num = 10;
11 float weight_threshold = 0.5f;
12 int core_mask = 0xff;
13
14 custompredict_s(input, input_size, output_label, output_weight, output_num, weight_threshold, core_mask);
15
16 return 0;
17}
私有存储版本:
-
void custompredict_p(LabelInfo *input, int input_size, int *output_label, float *output_weight, int output_num, float weight_threshold)
C调用示例:
1#include <stdio.h>
2#include "custompredict.h"
3
4int main() {
5 LabelInfo *input = (LabelInfo *)0x10000000; // input in L2
6 int *output_label = (int *)0x10001000; // output_label in L2
7 float *output_weight = (float *)0x10002000; // output_weight in L2
8
9 int input_size = 100; // 假设值
10 int output_num = 10;
11 float weight_threshold = 0.5f;
12
13 custompredict_p(input, input_size, output_label, output_weight, output_num, weight_threshold);
14
15 return 0;
16}